home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / archiver / pompey.lzh / DEPACK.S next >
Text File  |  1989-07-29  |  5KB  |  219 lines

  1. ;HI FOLKS, HERE IS A LITTLE TRAP #1 LOAD DEPACKING SOURCE TO
  2. ;BE USED WITH THE POMPEY PUFFS PACKER V1.5
  3. ;IT IS NOTHING SPECIAL. IT IS UP TO YOU TO WRITE BETTER ONES
  4. ;OTHERWISE YOU SHOULD BE GIVING US CREDIT FOR THE CODE
  5. ;ALL THIS WILL DO IS ENABLE STRAIGHT FORWARD OPEN-READALL-CLOSE
  6. ;TYPE OF GEMDOS FILELOAD PROGRAMS TO WORK IN FULLY DEPACKED FORM
  7.  
  8. ;SOME QUICK NOTES ABOUT THE PACKER
  9. ;EXEC IS FOR PROGRAM/TOS FILES (IN OTHER WORDS EXECUTABLE FILES)
  10. ;DATA IS FOR ALL OTHER FILES AND WILL NEED A TRAP #1 DEPACKER SUCH AS
  11. ; THIS ONE TO BE ABLE TO DEPACK THEM BACK TO FULL SIZE WHILST LOADING
  12. ; KILL/KEEP  KILL WILL PACK A FILE AND OVERWRITE THAT FILE WHEREAS KEEP
  13. ; WILL PACK IT AND CREATE ANOTHER FILE WITH A .POP EXTENDER
  14. ; ALL OTHER FUNCTIONS ARE USED IN THE SAME WAY AS OUR PACKERS SO
  15. ; THERE IS LITTLE POINT IN SAYING ANY MORE. IF YOU CAN USE ONE PACKER
  16. ; THEN YOU CAN SURELY USE THIS ONE
  17. ; TOUGH SHIT POMPEI PUFFS AND THANKS TO JPM AND MOB
  18.  
  19.         opt c+,d-
  20.  
  21.     
  22.     MOVEA.L    4(A7),A5
  23.     move.l $c(a5),d0
  24.     add.l $14(a5),d0
  25.     add.l $1c(a5),d0
  26.     add.l #$100,d0
  27.     move.l d0,-(sp)
  28.     move.l a5,-(sp)
  29.     move.l #$4a0000,-(sp)
  30.     trap #1
  31.     lea $c(a7),a7
  32.     CLR.L    -(A7)
  33.     MOVE.W    #$20,-(A7)
  34.     TRAP    #$01
  35.     MOVE.L D0,2(A7)
  36.     MOVE.L    $84.w,old84    ;SAVE OLD TRAP 1 ADDRESS
  37.     MOVE.L    #new84,$84.w    ;SET UP NEW TRAP 1 ADDRESS
  38.     TRAP    #$01
  39.     ADDQ.L    #6,A7
  40.     clr.w -(sp)
  41.     pea $ffffffff
  42.     move.l (a7),-(sp)
  43.     move.w #5,-(sp)
  44.     trap #14
  45.     lea $c(a7),a7
  46.     pea text    ;PUT YOUR SHIT HERE
  47.     move.w #9,-(sp)
  48.     trap #1
  49.     pea jamf
  50.     move.l (a7),-(sp)
  51.     move.l #gam,-(sp)    ;SELECT PROG TO EXECUTE FIRST
  52.     move.l #$4b0000,-(sp)
  53.     trap #1
  54.     lea $10(a7),a7
  55.     clr.w -(sp)
  56.     trap #1
  57. jamf    DC.L    0
  58.  
  59. new84        movem.l    a0-a6/d0-d7,reg
  60.         movea.l    a7,a1
  61.         addq.l     #6,a1
  62.         move.w     (a7),d0
  63.         btst     #$d,d0
  64.         bne.s     alien_is
  65.         move.l     usp,a1
  66. alien_is    cmpi.w     #$3F,(a1)
  67.         bEQ.s     read
  68. a_prick        movem.l     reg,a0-a6/d0-d7
  69.         dc.w     $4ef9
  70. old84        dc.l     $0
  71. memadd        dc.l     $0
  72. read        move.l     $8(a1),memadd    ;store address that file is loading to
  73.         move.l $2(a7),exit3f    ;make return address
  74.         move.l #domore,$2(a7)    ;now change return address so we can depack before really returning back to main program
  75.         bra.s a_prick
  76. reg        dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  77. realsize    dc.l 0
  78. domore        movem.l d0-d7/a0-a6,-(sp)
  79.         move.l d0,realsize    ;d0 now contains actual size of datafile just read
  80.                     ;d0 will be changed if the file just read is packed
  81.         pea pompey_puffs
  82.         move.w #$26,-(sp)    
  83.         trap #14    ;use supervisor mode (not necessary if you do not want to flash colors)
  84.         addq.l #6,sp
  85.         movem.l (a7)+,d0-d7/a0-a6
  86.         move.l realsize,d0    ;return with file size in d0
  87.         dc.w $4ef9    ;hex code for JMP instruction
  88. exit3f        dc.l 0
  89. pompey_puffs
  90.         move.l memadd,a4
  91.         add.l realsize,a4    ;pointer now at file end
  92.         move.l a4,a2
  93.         subq.l #4,a4
  94.         move.b (a4),d0        ;using bytes in case of odd addressing
  95.         rol.l #8,d0
  96.         move.b 1(a4),d0
  97.         rol.l #8,d0
  98.         move.b 2(a4),d0
  99.         rol.l #8,d0
  100.         move.b 3(a4),d0        
  101.         cmp.l #$50554646,d0    ;check header (PUFF) to see if flie is packed
  102.         bne ret
  103.         move.l a4,a0
  104.         move.l -(a0),d6        ;d6 = realsize
  105.         move.l d6,realsize      ;change realsize as this file is packed
  106.         move.l -(a0),d2        ;d2 = packed size
  107.         sub.l d2,a2
  108.         move.l a2,a4
  109.         add.l d6,a2
  110.         moveq.l #0,d0
  111.         lea $ffff8240.w,a6
  112.         move.w (a6),d7
  113. puffs0        move.b -(a0),d0
  114.         beq.s puffs0
  115. puffs1        moveq.l #0,d2
  116.         cmpa.l a2,a0
  117.         bgt ret
  118.         bsr puffs15
  119.         bcs.s puffs4
  120.         move.b -(a0),d2
  121. puffs2        move.b d2,-(a2)
  122.         bra.s puffs6
  123. puffs3        moveq.l #15,d4
  124.         moveq.l #2,d3
  125.         bsr puffs18
  126.         bne puffs13
  127.         move.w d4,d2
  128.         bra.s puffs2
  129. puffs4        bsr puffs15
  130.         bcc puffs9
  131.         bsr puffs15
  132.         bcc puffs3
  133.         bsr puffs15
  134.         bcs puffs5
  135.         moveq.l #2,d1
  136.         bsr puffs22
  137.         exg d1,d2
  138.         addq.w #1,d2
  139.         bset d1,d2
  140.         bra puffs2
  141. puffs5        bsr puffs15
  142.         bcs.s puffs8
  143.         moveq.l #15,d4
  144.         moveq.w #3,d3
  145.         bsr.s puffs18
  146.         bne.s puffs13
  147.         move.b (a2),-(a2)
  148. puffs6        neg.w (a6)    ;play around with blah.w,(a6) for colour flashing effects
  149.         move.w d7,(a6)    ;d7 is restoring default colour
  150.         cmpa.l a2,a4
  151.         blt puffs1
  152. puffs7        rts
  153. puffs8        moveq.l #4,d3
  154.         bra.s puffs12
  155. puffs9        bsr puffs15
  156.         bcs puffs27
  157.         moveq.l #1,d1
  158. puffs10        lsr.b #1,d0
  159.         bne.s puffs11
  160.         move.b -(a0),d0
  161.         roxr.b #1,d0
  162. puffs11        addx.w d2,d2
  163.         dbf d1,puffs10
  164.         move.w d2,d1
  165.         beq puffs26
  166.         addq.w #1,d1
  167.         add.w d1,d1
  168.         subq.w #1,d1
  169.         bsr puffs22
  170.         move.w d2,d3
  171. puffs12        bsr.s puffs17
  172. puffs13        movea.l a2,a1
  173.         adda.l d2,a1
  174. puffs14        move.b -(a1),-(a2)
  175.         dbf d3,puffs14
  176.         bra puffs6
  177. puffs15        lsr.b #1,d0
  178.         bne.s puffs16
  179.         move.b -(a0),d0
  180.         roxr.b #1,d0
  181. puffs16        rts
  182. puffs17        moveq.l #0,d4
  183. puffs18        moveq.l #1,d1
  184.         moveq.l #0,d2
  185. puffs19        lsr.b #1,d0
  186.         bne.s thanks_jpm
  187. puffs20        move.b -(a0),d0
  188.         roxr.b #1,d0
  189. thanks_jpm
  190.         addx.w d2,d2
  191.         dbf d1,puffs19
  192.         move.w d2,d1
  193.         addq.w #1,d1
  194.         lsl.w #2,d1
  195.         subq.w #1,d1
  196.         eor.b d1,d4
  197.         bne.s puffs22
  198.         rts
  199. puffs21        moveq.l #7,d1
  200. puffs22        moveq.l #0,d2
  201. puffs23        lsr.b #1,d0
  202.         bne.s puffs25
  203. puffs24        move.b -(a0),d0
  204.         roxr.b #1,d0
  205. puffs25        addx.w d2,d2
  206.         dbf d1,puffs23
  207.         rts
  208. puffs26        bsr puffs17
  209.         move.w d2,d3
  210.         moveq.l #1,d2
  211.         bra puffs13
  212. puffs27        moveq.l #1,d3
  213.         move.b -(a0),d2
  214.         bra puffs13 
  215.  
  216. ret        rts            
  217. gam        dc.b "gamename.prg",0
  218. text        dc.b "WHOEVER PRESENTS . . .",13,10
  219.         dc.b "WHICHEVER GAME",0